package com.android.example.myapplication;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import java.text.SimpleDateFormat;
import java.util.Date;

import android.os.Handler;

public class MainActivity7 extends AppCompatActivity implements View.OnClickListener, View.OnLongClickListener{
    private TextView tv_capture;
    private ImageView iv_capture;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main7);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        tv_capture = (TextView) findViewById(R.id.tv_capture);//根据指定的 ID 找到一个 TextView 控件
        iv_capture = (ImageView) findViewById(R.id.iv_capture);
        tv_capture.setDrawingCacheEnabled(true);
        Button btn_chat = (Button) findViewById(R.id.btn_chat);
        Button btn_capture = (Button) findViewById(R.id.btn_capture);
        btn_chat.setOnClickListener(this);//设置点击事件
        btn_chat.setOnLongClickListener(this);//设置点击事件
        btn_capture.setOnClickListener(this);
    }
    private String[] mChatStr = { "你吃饭了吗？", "今天天气真好呀。",
            "我中奖啦！", "我们去看电影吧。", "晚上干什么好呢？" };

    @Override
    public boolean onLongClick(View v) {
        if (v.getId() == R.id.btn_chat) {
            tv_capture.setText("");
        }
        return true;
    }
    @Override
    public void onClick(View v) {
        //定义时间和时间格式
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentTime1 = sdf.format(date);
        //如果id等于R.id.tv_control或R.id.tv_bbs，则执行以下操作。
        if (v.getId() == R.id.btn_chat) {
            //生成一个介于0到4之间的随机整数random
            int random = (int)(Math.random()*10) % 5;
            //使用String.format方法创建一个新的字符串newStr。该字符串包含了的当前文本、当前时间（通过currentTime1方法获取）和一个随机选择的字符串mChatStr[random]
            String newStr = String.format("%s\n%s %s",tv_capture.getText().toString(), currentTime1, mChatStr[random]);
            //将newStr设置为tv_bbs的文本。
            tv_capture.setText(newStr);
        } else if (v.getId() == R.id.btn_capture) {
            //首先，通过 tv_capture.getDrawingCache() 方法获取一个 Bitmap 对象。
            // getDrawingCache() 方法通常用于获取视图的绘制缓存，将其转换为 Bitmap 格式。
            Bitmap bitmap = tv_capture.getDrawingCache();
            //然后，使用 iv_capture.setImageBitmap(bitmap) 方法将获取到的 Bitmap 对象设置给 iv_capture 这个图像视图进行显示。
            iv_capture.setImageBitmap(bitmap);
            // 注意这里在截图完毕后不能马上关闭绘图缓存，因为画面渲染需要时间，
            // 如果立即关闭缓存，渲染画面就会找不到位图对象，会报错
            // “java.lang.IllegalArgumentException: Cannot draw recycled bitmaps”。
            mHandler.postDelayed(mResetCache, 200);
        }
    }

    private Handler mHandler = new Handler();
    private Runnable mResetCache = new Runnable() {
        @Override
        public void run() {
            tv_capture.setDrawingCacheEnabled(false);
            tv_capture.setDrawingCacheEnabled(true);
        }
    };
}